Kerberos 身份验证故障排除指南 您所在的位置:网站首页 复制时发生错误 指定的目标不存在 Kerberos 身份验证故障排除指南

Kerberos 身份验证故障排除指南

2024-07-10 05:07| 来源: 网络整理| 查看: 265

Kerberos 身份验证故障排除指南 项目12/26/2023

本指南提供排查 Kerberos 身份验证问题时使用的基本概念。

故障排除清单

与 Kerberos 相关的错误是另一个服务失败的症状。 Kerberos 协议依赖于许多服务,这些服务必须可用并正常运行才能进行任何身份验证。

若要确定 Kerberos 身份验证是否出现问题,请在系统事件日志中检查来自提供身份验证的客户端、目标服务器或域控制器上任何服务 (错误,例如 Kerberos、kdc、LsaSrv 或 Netlogon) 。 如果存在任何此类错误,也可能存在与 Kerberos 协议关联的错误。

对目标服务器的安全事件日志的失败审核可能会显示,登录失败时正在使用 Kerberos 协议。

在检查 Kerberos 协议之前,请确保以下服务或条件正常运行:

网络基础结构正常运行,并且所有计算机和服务都可以通信。 域控制器是可访问的。 例如,可以在客户端或目标服务器上) (nltest /dsgetdc:contoso.com /force /kdc 运行命令nltest /dsgetdc: /force /kdc。 域名系统 (DNS) 已正确配置并正确解析主机名和服务。 时钟跨域同步。 已安装 Windows Server 的所有关键更新和安全更新。 所有软件(包括非 Microsoft 软件)都会更新。 如果运行的是服务器操作系统,则计算机会重启。 所需的服务和服务器可用。 Kerberos 身份验证协议需要正常运行的域控制器、DNS 基础结构和网络才能正常工作。 在开始排查 Kerberos 协议问题之前,请验证是否可以访问这些资源。

如果已检查所有这些条件,但仍遇到身份验证问题或 Kerberos 错误,则需要进一步寻找解决方案。 这些问题可能是由 Kerberos 协议的配置方式或与 Kerberos 协议配合使用的其他技术配置方式引起的。

常见问题和解决方案 Kerberos 委派问题

在典型方案中,模拟帐户是分配给 Web 应用程序的服务帐户或 Web 服务器的计算机帐户。 模拟帐户是需要通过 Web 应用程序访问资源的用户帐户。

使用 Kerberos 的委派有三种类型:

完全委派 (不受约束的委派)

应尽可能避免完全委派。 (前端用户和后端用户的用户) 可以位于不同的域和不同的林中。

仅限 Kerberos (约束委派和协议转换)

用户可以来自任何域或林,但前端和后端服务应在同一域中运行。

基于资源的约束委派 (RBCD)

用户可以来自任何域,前端和后端资源可以来自任何域或林。

最常见的 Kerberos 委派故障排除 服务主体名称缺失或重复 为服务器) 提供的名称解析失败或错误响应 (错误的 IP 地址 大型 Kerberos 票证 (MaxTokenSize) 和环境未正确设置 防火墙或路由器阻止的端口 服务帐户未 (用户权限分配) 前端或后端服务不在同一域和约束委派设置中

有关更多信息,请参阅:

CIFS 的约束委派失败,出现ACCESS_DENIED错误 为自定义服务帐户配置约束委派 在 NetworkService 帐户上配置约束委派 单一登录 (SSO) 中断,并提示进行身份验证一次

请考虑以下方案:

Microsoft Edge 和 Internet Information Services 等客户端和服务器应用程序 (IIS) 服务器。 IIS 服务器配置了 Windows 身份验证 (协商) 。 客户端和服务器应用程序,例如 SMB 客户端和 SMB 服务器。 默认情况下,SMB 服务器配置了协商安全支持提供程序接口 (SSPI) 。

用户打开 Microsoft Edge 并浏览内部网站 http://webserver.contoso.com。 该网站配置了 Negotiate,并且此网站会提示进行身份验证。 用户手动输入用户名和密码后,用户将获得身份验证,网站按预期工作。

注意

此方案是客户端和服务器的一个示例。 对于使用集成Windows 身份验证配置的任何客户端和服务器,故障排除技术都是相同的。

集成Windows 身份验证在用户级别或计算机级别中断。

故障排除方法

查看可在应用程序或计算机级别启用的集成身份验证设置的客户端配置。 例如,所有基于 HTTP 的应用程序在尝试执行集成身份验证时,都会查找站点位于受信任的区域中。

打开 inetcpl.cpl (Internet 选项) ,所有基于 HTTP 的应用程序都将其用于 Internet Explorer 配置,并查看网站是否配置为 本地 Intranet。

应用程序还具有用于执行集成Windows 身份验证的配置。

Microsoft Edge 或 Internet Explorer 具有要启用 的“启用集成 Windows 身份验证” 设置。

查看应用程序配置,客户端计算机可以获取给定服务主体名称的 Kerberos 票证 (SPN) 。 在此示例中,SPN 为 http/webserver.contoso.com。

找到 SPN 时的成功消息:

C:>klist get http/webserver.contoso.com Current LogonId is 0:0x9bd1f A ticket to http/webserver.contoso.com has been retrieved successfully.

找不到 SPN 时出现错误消息:

C:>klist get http/webserver.contoso.com klist failed with 0xc000018b/-1073741429: The SAM database on the Windows Server does not have a computer account for this workstation trust relationship.

标识相应的 SPN 并将其添加到相应的用户、服务或计算机帐户。

如果已确定可以检索 SPN,则可以使用以下命令验证它们是否已在正确的帐户上注册:

setspn -F -Q */webserver.contoso.com 身份验证 DC 发现问题

配置了集成Windows 身份验证的应用程序服务器需要域控制器 (DC) 对用户/计算机和服务进行身份验证。

在身份验证过程中无法联系域控制器会导致错误 1355:

指定的域不存在或无法联系

无法访问配置了集成Windows 身份验证并出现错误 1355 的资源

注意

错误消息可能与应用程序不同,但错误的含义是客户端或服务器无法发现域控制器。

下面是此类错误消息的示例:

尝试加入域“Contoso”时出现以下错误: 指定的域不存在或无法联系。

找不到域 contoso.com 的域控制器

无法联系域控制器 1355

问题的主要原因

客户端上的 DNS 配置错误

可以运行 命令 ipconfig /all 并查看 DNS 服务器列表。

受信任域或林中域控制器上的 DNS 配置错误

客户端和域控制器之间阻止的网络端口

DC 发现端口:UDP 389 (UDP LDAP) 和 UDP 53 (DNS)

故障排除步骤 运行 nslookup 命令以识别任何 DNS 错误配置。 在客户端和域控制器之间打开所需的端口。 有关详细信息,请参阅 如何为 Active Directory 域和信任配置防火墙。 日志分析测试方案 环境和配置

客户端计算机

Client1.contoso.com (Windows 11计算机) 加入域 Contoso.com。

用户 John

用户属于 Contoso.com 客户端计算机,并在客户端计算机上登录。

客户端计算机上的 Internet 选项

所有网站都是本地 Intranet 区域的一部分。

服务器

IISServer.contoso.com (Windows Server 2019) 加入域 Contoso.com。

身份验证配置

Windows 身份验证已启用。

身份验证提供程序:协商

启用的提供程序设置如下:

身份验证流

用户 John 登录到 Client1.contoso.com,打开 Microsoft Edge 浏览器并连接到 IISServer.contoso.com。 客户端计算机将执行以下步骤 (上图中的步骤 1) : DNS 解析程序缓存 IISServer.contoso.com 以验证是否已缓存此信息。 DNS 解析程序在 HOSTS 文件中检查 C:\Windows\System32\drivers\etc\Hosts 中的任何映射IISServer.contoso.com。 将 DNS 查询发送到首选 DNS 服务器, (IP 配置设置) 配置,该服务器也是环境中的域控制器。 在域控制器上运行的 DNS 服务将查看其配置的区域,解析主机 A 记录,并使用上图) 中步骤 2 (IP 地址 IISServer.contoso.com 进行响应。 客户端计算机将在 TCP 端口 80 上 IISServer.contoso.com执行 TCP 三向握手。 客户端计算机将向 发送匿名 HTTP 请求 IISServer.contoso.com。 侦听端口 80 上的 IIS 服务器将接收来自 Client1.contoso.com的请求,查看 IIS 服务器身份验证配置,并将 HTTP 401 质询响应发回客户端计算机(将 Negotiate 作为身份验证配置 (上图中的步骤 3) )。 在 上运行 Client1.contoso.com 的 Microsoft Edge 进程将知道 IIS 服务器配置了 Negotiate,并将验证网站是否是本地 Intranet 区域的一部分。 如果网站位于本地 Intranet 区域,则 Microsoft Edge 进程将调用 LSASS.exe ,以获取具有 SPN HTTP\IISServer.contoso.com (上图步骤 5) 的 Kerberos 票证。 域控制器 (KDC 服务) 将接收来自 Client1.contoso.com的请求,在其数据库中搜索 SPN HTTP\IISServer.contoso.com 并查找 IISServer.contoso.com 配置了此 SPN。 域控制器将使用 IIS 服务器票证 (上图) 中的步骤 6 的 TGS 响应进行响应。 客户端计算机上的 Microsoft Edge 进程将使用域控制器颁发的 Kerberos TGS 票证向 IIS Web 服务器发送 Kerberos 应用程序协议 (AP) 请求。 IIS 进程将调用 Web 服务器上的 LSASS.exe ,以解密票证,并创建具有 SessionID 和用户组成员身份的令牌进行授权。 IIS 进程将从 LSASS.exe 获取令牌的句柄,以做出授权决策并允许用户与 AP 响应进行连接。 工作流的网络监视器分析

注意

你需要是本地管理员组的用户才能执行以下活动。

在客户端计算机上安装 Microsoft 网络监视器 (Client1.contoso.com) 。

在提升的命令提示符窗口中运行以下命令, (cmd.exe) :

ipconfig /flushdns

启动网络监视器。

打开 Microsoft Edge 浏览器并键入 http://iisserver.contoso.com。

网络跟踪分析:

针对主机 A 记录的域控制器的 DNS 查询: IISServer.contoso.com。

3005 00:59:30.0738430 Client1.contoso.com DCA.contoso.com DNS DNS:QueryId = 0x666A, QUERY (Standard query), Query for iisserver.contoso.com of type Host Addr on class Internet

来自域控制器上的 DNS 服务的 DNS 响应。

3006 00:59:30.0743438 DCA.contoso.com Client1.contoso.com DNS DNS:QueryId = 0x666A, QUERY (Standard query), Response - Success, 192.168.2.104

上的 Client1.contoso.com Microsoft Edge 进程 (匿名连接) 连接到 IIS Web 服务器 IISServer.contoso.com 。

3027 00:59:30.1609409 Client1.contoso.com iisserver.contoso.com HTTP HTTP:Request, GET / Host: iisserver.contoso.com

IIS 服务器使用 HTTP 响应 401:协商和 NTLM (在 IIS 服务器上执行的配置) 进行响应。

3028 00:59:30.1633647 iisserver.contoso.com Client1.contoso.com HTTP HTTP:Response, HTTP/1.1, Status: Unauthorized, URL: /favicon.ico Using Multiple Authetication Methods, see frame details WWWAuthenticate: Negotiate WWWAuthenticate: NTLM

来自 Client1.contoso.com 的 Kerberos 请求将转到带有 SPN 的域控制器 DCA.contoso.com : HTTP/iisserver.contoso.com。

3034 00:59:30.1834048 Client1.contoso.com DCA.contoso.com KerberosV5 KerberosV5:TGS Request Realm: CONTOSO.COM Sname: HTTP/iisserver.contoso.com

域控制器 DCA.contoso.com 使用 Kerberos 请求进行响应,该请求具有具有 Kerberos 票证的 TGS 响应。

3036 00:59:30.1848687 DCA.contoso.com Client1.contoso.com KerberosV5 KerberosV5:TGS Response Cname: John Ticket: Realm: CONTOSO.COM, Sname: HTTP/iisserver.contoso.com Sname: HTTP/iisserver.contoso.com

上的 Microsoft Edge 进程 Client1.contoso.com 现在通过 Kerberos AP 请求转到 IIS 服务器。

3040 00:59:30.1853262 Client1.contoso.com iisserver.contoso.com HTTP HTTP:Request, GET /favicon.ico , Using GSS-API Authorization Authorization: Negotiate Authorization: Negotiate YIIHGwYGKwYBBQUCoIIHDzCCBwugMDAuBgkqhkiC9xIBAgIGCSqGSIb3EgECAgYKKwYBBAGCNwICHgYKKwYBBAGCNwICCqKCBtUEggbRYIIGzQYJKoZIhvcSAQICAQBugga8MIIGuKADAgEFoQMCAQ6iBwMFACAAAACjggTvYYIE6zCCBOegAwIBBaENGwtDT05UT1NPLkNPTaIoMCagAwIBAqEfMB0bBEhUVFAbF SpnegoToken: 0x1 NegTokenInit: ApReq: KRB_AP_REQ (14) Ticket: Realm: CONTOSO.COM, Sname: HTTP/iisserver.contoso.com

IIS 服务器响应身份验证已完成的响应。

3044 00:59:30.1875763 iisserver.contoso.com Client1.contoso.com HTTP HTTP:Response, HTTP/1.1, Status: Not found, URL: / , Using GSS-API Authentication WWWAuthenticate: Negotiate oYG2MIGzoAMKAQChCwYJKoZIgvcSAQICooGeBIGbYIGYBgkqhkiG9xIBAgICAG+BiDCBhaADAgEFoQMCAQ+ieTB3oAMCARKicARuIF62dHj2/qKDRV5XjGKmyFl2/z6b9OHTCTKigAatXS1vZTVC1dMvtNniSN8GpXJspqNvEfbETSinF0ee7KLaprxNgTYwTrMVMnd95SoqBkm/FuY7WbTAuPvyRmUuBY3EKZEy NegotiateAuthorization: GssAPI: 0x1 NegTokenResp: ApRep: KRB_AP_REP (15)

运行 klist tickets 命令,在 上的 Client1.contoso.com命令输出中查看 Kerberos 票证。

Client: John @ CONTOSO.COM Server: HTTP/iisserver.contoso.com @ CONTOSO.COM KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96 Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize Start Time: 11/28/2022 0:59:30 (local) End Time: 11/28/2022 10:58:56 (local) Renew Time: 12/5/2022 0:58:56 (local) Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: 0 Kdc Called: DCA.contoso.com

查看 IIS 服务器上的事件 ID 4624,显示 Success 审核:

默认情况下,在 Success Windows 的所有服务器操作系统上启用 或 Failure 审核。 可以通过以下命令验证是否启用了审核。

如果发现审核未启用,请启用审核。 查看以下列表中的登录类别。 可以看到,登录子类别是使用 启用的 Success and Failure。

C:\>auditpol /get /Subcategory:"logon" System audit policy Category/Subcategory Setting Logon/Logoff Logon Success and Failure

如果未观察到使用 Success and Failure登录,请运行 命令以启用它:

C:\>auditpol /set /subcategory:"Logon" /Success:enable /Failure:enable The command was successfully executed. 查看 IISServer.contoso.com 上的成功安全事件 ID 4624

观察以下字段:

Logon type:3 (网络登录) Security ID in New Logon field: Contoso\John Source Network Address:客户端计算机的 IP 地址 Logon Process 和 Authentication Package: Kerberos Log Name: Security Source: Microsoft-Windows-Security-Auditing Date: 11/28/2022 12:59:30 AM Event ID: 4624 Task Category: Logon Level: Information Keywords: Audit Success User: N/A Computer: IISServer.contoso.com Description: An account was successfully logged on. Subject: Security ID: NULL SID Account Name: - Account Domain: - Logon ID: 0x0 Logon Information: Logon Type: 3 Restricted Admin Mode: - Virtual Account: No Elevated Token: No Impersonation Level: Impersonation New Logon: Security ID: CONTOSO\John Account Name: John Account Domain: CONTOSO.COM Logon ID: 0x1B64449 Linked Logon ID: 0x0 Network Account Name: - Network Account Domain: - Logon GUID: {} Process Information: Process ID: 0x0 Process Name: - Network Information: Workstation Name: - Source Network Address: 192.168.2.101 Source Port: 52655 Detailed Authentication Information: Logon Process: Kerberos Authentication Package: Kerberos 排查身份验证工作流问题

使用以下方法之一来排查问题。

验证是否可以解析 IIS Web 服务器的名称, (IISServer.contoso.com 从 Client1.contoso.com) 。

使用以下 cmdlet 验证 DNS 服务器是否响应正确的 IIS 服务器 IP 地址:

PS C:\> Resolve-DnsName -Name IISServer.contoso.com Name Type TTL Section IPAddress ---- ---- --- ------- --------- IISServer.contoso.com A 1200 Answer 192.168.2.104

使用以下 cmdlet 验证是否在客户端计算机和 IIS Web 服务器之间打开网络端口, (IISServer.contoso.com) :

PS C:\> Test-NetConnection -Port 80 IISServer.contoso.com ComputerName : IISServer.contoso.com RemoteAddress : 192.168.2.104 RemotePort : 80 InterfaceAlias : Ethernet 2 SourceAddress : 192.168.2.101 TcpTestSucceeded : True

验证是否从域控制器获取 Kerberos 票证。

在尝试访问网站的用户的上下文中打开普通命令提示符 (而不是管理员命令提示符) 。

运行 klist purge 命令。

运行命令, klist get http/iisserver.contoso.com 如下所示:

PS C:\> klist get http/iisserver.contoso.com Current LogonId is 0:0xa8a98b A ticket to http/iisserver.contoso.com has been retrieved successfully. Cached Tickets: (2) #0> Client: John @ CONTOSO.COM Server: krbtgt/CONTOSO.COM @ CONTOSO.COM KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96 Ticket Flags 0x40e10000 -> forwardable renewable initial pre_authent name_canonicalize Start Time: 11/28/2022 1:28:11 (local) End Time: 11/28/2022 11:28:11 (local) Renew Time: 12/5/2022 1:28:11 (local) Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: 0x1 -> PRIMARY Kdc Called: DCA.contoso.com #1> Client: John @ CONTOSO.COM Server: http/iisserver.contoso.com @ CONTOSO.COM KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96 Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize Start Time: 11/28/2022 1:28:11 (local) End Time: 11/28/2022 11:28:11 (local) Renew Time: 12/5/2022 1:28:11 (local) Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: 0 Kdc Called: DCA.contoso.com

你会发现在 列中获取 SPN http/IISServer.contoso.comCached Ticket (2) 的 Kerberos 票证。

使用默认凭据验证 IIS Web 服务是否在 IIS 服务器上运行。

在尝试访问网站的用户的上下文中打开普通 PowerShell 提示 (而不是管理员 PowerShell 提示符) 。

PS C:\> invoke-webrequest -Uri http://IIsserver.contoso.com -UseDefaultCredentials PS C:\> invoke-webrequest -Uri http://IIsserver.contoso.com -UseDefaultCredentials StatusCode : 200 StatusDescription : OK Content : Client: John @ CONTOSO.COM Server: cifs/iisserver.contoso.com @ CONTOSO.COM KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96 Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize Start Time: 11/28/2022 1:40:22 (local) End Time: 11/28/2022 11:28:11 (local) Renew Time: 12/5/2022 1:28:11 (local) Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: 0 Kdc Called: DCA.contoso.com

收集 上的 Client1.contoso.com网络跟踪。 查看网络跟踪,观察哪个步骤失败,以便进一步缩小步骤范围并排查问题。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有